#pragma once
#include "XCom.h"
#include <string>
#include <iostream> //printf("[%s]",__FUNCTION__)

#define XCOM_LOG_STREAM(stream,level,msg) (stream)<< "[" << level << "] " << __FILE__ << ":" << __LINE__ << "\n    " << msg << std::endl
/*
#define XCOM_DEBUG 1
#define XCOM_INFO 2
#define XCOM_ERROR 3

#ifndef XCOM_LOG_LEVEL
*/
#if  XCOM_LOG_LEVEL<=XCOM_ERROR
#define XCOM_LOG_ERROR(msg) XCOM_LOG_STREAM(std::cerr,"ERROR",msg)
#define XCOM_ERROR_STREAM(stream,msg) XCOM_LOG_STREAM(stream,"ERROR",msg)
#else
#define XCOM_LOG_ERROR(msg)
#define XCOM_ERROR_STREAM(stream,msg)
#endif

#if  XCOM_LOG_LEVEL<=XCOM_INFO
#define XCOM_LOG_INFO(msg) XCOM_LOG_STREAM(std::cout,"INFO",msg)
#define XCOM_INFO_STREAM(stream,msg) XCOM_LOG_STREAM(stream,"INFO",msg)
#else
#define XCOM_LOG_INFO(msg)
#define XCOM_INFO_STREAM(stream,msg)
#endif

#if  XCOM_LOG_LEVEL<=XCOM_DEBUG
#define XCOM_LOG_DEBUG(msg) XCOM_LOG_STREAM(std::cout,"DEBUG",msg)
#define XCOM_DEBUG_STREAM(stream,msg) XCOM_LOG_STREAM(stream,"DEBUG",msg)
#else
#define XCOM_LOG_DEBUG(msg)
#define XCOM_DEBUG_STREAM(stream,msg)
#endif

namespace xplatform
{
    XCOM_API std::string GetDirData(const std::string &path);
}